package singleton;

//单例模式的静态内部类写法
public class InnerClassType {

    //构造器加锁来确保不被反射破坏单例模式
    private InnerClassType(){
        synchronized (InnerClassType.class){
            InnerClassType innerClassType = getInnerClassType();
            if(innerClassType != null){
                throw new RuntimeException("请不要刻意使用反射去破坏游戏规则！");
            }
            System.out.println(Thread.currentThread().getName()+"创建了线程");
        }
    }

//    private InnerClassType(){
//         System.out.println(Thread.currentThread().getName()+"创建了线程");
//    }


    public static InnerClassType getInnerClassType(){
        return InnerClass.innerClassType;
    }

    public static class InnerClass{
        private static final InnerClassType innerClassType = new InnerClassType();
    }

}
